約 4,543,655 件
https://w.atwiki.jp/atyou/pages/63.html
障害タイプ 文障害 SQL文としては正しいけれども、Oracleサーバのルールに基づき、実行エラーとなってしまうことです。 次のような問題と解決方法があります。 問題 解決方法 無効なデータ 制約違反、データ型の不一致、データ最大長の超過などが原因です。データを検証し、修正します。 権限不足エラー 適切なオブジェクト権限、システム権限を付与します。 領域不足エラー 表領域の空き領域不足、エクステントの拡張エラー、領域割り当て制限(QUOTA)超過が原因です。必要な領域を追加します。また、再開可能領域割り当て機能を使用することで、領域不足時に処理を一時停止させ、解消時に再開させることも可能です。 ユーザープロセス障害 ユーザープロセスが異常終了してしまうことです。 クライアント側のリソース不足によるプロセスの終了、Oracleサーバとのネットワークの切断によるセッションの終了などが考えられます。 ユーザープロセス障害の解決は、Oracleサーバ側のサーバプロセスのクリーンアップで対応します。 サーバプロセスのクリーンアップは、PMONバックグラウンドプロセスにより自動的に行われるため、データベース管理者による特別なアクションは必要ありま せん。 PMONバックグラウンドプロセスは、トランザクションをロールバックし、ロックを解放します。 ユーザーエラー ユーザーが誤ったトランザクションをCOMMITしたり、誤ってテーブルを削除、切り捨ててしまったりすることです。 SQL文としては正しいため、 Oracleサーバは渡されたSQL文を正しく実行します。 その結果、必要なテーブルが削除されたことにより、システムとしては問題のある状態になってしまいます。 ユーザーエラーの解決は、操作を行う前の状態にすることで図れます。 フラッシュバックテーブル、フラッシュバックドロップ、フラッシュバックデータベースといったフラッシュバックリカバリ機能か、データファイルのバックアップを 使用して、過去の一時点までのリカバリ(Point-in-timeリカバリ)を行います。 誤った操作が行われた時間を識別するために、LogMinerユーティリティが使用できます。 LogMinerでは、REDOログファイルから、実行されたSQL文、実行したユーザー、実行した時間などを確認することができます。 インスタンス障害(インスタンス・リカバリ) バックグラウンドプロセスが異常終了したり、データベースファイル以外のハードディスク障害が発生したり、強制終了(SHUTDOWN ABORTを含む)したりすることです。 インスタンス障害の解決は、インスタンスを再起動することで図れます。 Oracleサーバは、インスタンス障害が発生した後のインスタンス起動時に、自動的にインスタンスのリカバリを行います。 インスタンスのリカバリでは、REDOログファイルを再度適用するロールフォワード、COMMITされていないトランザクションを取り消すロールバックが行われます。 メディア障害(メディア・リカバリ) データベースファイルが損失したり、ディスクが破損したり、ディスクコントローラが破損したりすることです。 メディア障害の解決には、バックアップファイルのリストアと、REDOログ(アーカイブログを含む)を適用するリカバリ操作が必要です。 データベースのバックアップ NOARCHIVELOGモードとARCHIVELOGモード(一貫性バックアップと非一貫性バックアップ) Oracleデータベースは、 NOARCHIVELOGモード≒一貫性バックアップ(完全バックアップ) ARCHIVELOGモード≒非一貫性バックアップ(部分バックアップ) のいずれかで運用できます。 NOARCHIVELOGモード ARCHIVELOGモード バックアップ時、データベースを停止する必要がある バックアップ時、データベースがオープンしていてもよい データファイルにREDOログファイル内のすべての変更が適用済み データファイルに適用されていない変更がREDOログファイル、アーカイブログファイルに含まれる 同じタイミングで取得したデータベース全体のバックアップが必要 個々のデータファイル、表領域単位で取得したバックアップでよい データファイルに障害が発生した場合、バックアップ全体をリストア(復元)する必要がある データファイルに障害が発生した場合、障害が発生したファイルのみリストア(復元)すればよい リストア(復元)操作直後にデータベースをオープンできる リストア(復元)操作後、リカバリ操作を行う必要がある アーカイブログファイルを適用するリカバリができない。 アーカイブログファイルの管理は不要 アーカイブログファイルを適用するリカバリができる。アーカイブログファイルを失うとリカバリできなくなるため、適切な管理が必要 一貫性バックアップのみ有効です。 一貫性バックアップと非一貫性バックアップの両方を使用することができます。 完全リカバリとPoint-in-Timeリカバリ メディアリカバリの基本的な流れはREDOログレコードを適用するロールフォワードとUNDOデータを適用するロールバックで構成されます。 ロールフォワードによって変更が適用されると、COMMITされたデータだけでなく、COMMITされていないデータも適用されてしまいます。 そのため、ロールフォワード中にUNDOデータを再構築し、UNDOデータを使用してCOMMITされていないものをロールバックします。 リカバリ(回復)には、 完全リカバリ Point-in-Time(不完全)リカバリ があります。 ARCHIVELOGモードでは、完全リカバリとPoint-in-Timeリカバリを使用できます。 完全リカバリ Point-in-Time(不完全リカバリ) アーカイブログファイルとREDOログファイルに含まれるすべての変更を適用する データファイルをバックアップした後の任意の時点までのアーカイブログファイル、REDOログファイルに含まれる変更を適用する 障害発生直前のCOMMITされた状態に回復する 指定した時点の状態に回復する ※過去の一時点を対象とした不完全リカバリについては、ORACLE MASTER Silverの範囲ではありません。 NOARCHIVELOGモードでは、一貫性バックアップをすべてリストア(復元)のみで、リカバリ(回復)は、おこないません。 ARCHIVELOG モードへの変更は、 Database Controlでは「メンテナンス」タブ→「バックアップ/リカバリ」リージョンの 「リカバリ設定の構成」 リンクから行えます。 アーカイブログファイルの保存先はデフォルトではフラッシュリカバリ領域になっていますが、最大10カ所を指定できます コマンドラインからARCHIVELOGモードに変更する手順は次のとおりです。 1.データベースを停止する 2.データベースをMOUNTする 3.ALTER DATABASE ARCHIVELOGコマンドの実行 4.データベースをOPENする フラッシュリカバリ領域 フラッシュリカバリ領域は、バックアップファイルやアーカイブログファイルを格納する場所です。 Database Controlでは、「メンテナンス」タブ→「バックアップ/リカバリ」リージョンの「リカバリ設定の構成」リンクから構成できます フラッシュバックドロップとフラッシュバックテーブル Oracleデータベースでは、次のようなフラッシュバック操作が提供され、過去の特定の時点に戻ることが可能です。 フラッシュバック問い合わせ ある時間を指定して問い合わせを実行し、その時点で表示されるはずの問い合わせ結果を表示する 行履歴フラッシュバック 指定した2つの時点の間で生成されたすべてのバージョンのデータを表示 トランザクション履歴フラッシュバック トランザクションによって行われた変更を戻すためのSQL文を表示する フラッシュバックテーブル 表を指定した時点の状態に戻す フラッシュバックドロップ 削除された表を戻す フラッシュバックデータベース データベース全体を指定した時点の状態に戻す 試験ではフラッシュバックドロップとフラッシュバックテーブルに注意しましょう。 Oracle Database 10gで表を削除すると、関連する索引、制約、データベーストリガーは元の表領域内にリネームされた状態で残されています。これをごみ箱に置かれた状態といいます。ごみ箱から元に戻すことをフラッシュバックドロップといいます。 ごみ箱からパージを行うと表内のすべての行が削除され、データディクショナリから定義が削除されます。表に作成された索引も同時に削除されます(ビューは自動的に削除されません)。 フラッシュバックテーブルではUNDOデータを使用し、1つ以上の表を特定の時点の状態に戻すことができます。特定の時点の状態を判断するために、フラッシュバック問い合わせ、行履歴フラッシュバック、トランザクション履歴フラッシュバックなどを活用します。 実行には、行の移動が有効であることなどの条件があります。 http //jibun.atmarkit.co.jp/lskill01/rensai/bronzedba11/bronzedba01.html
https://w.atwiki.jp/ora_tips/pages/14.html
バックアップ 一貫性バックアップ データベースに含まれる全てのファイルをバックアップする。(整合性がとれた状態) ⇒データベースを停止していることがポイント。チェックポイントを行い整合性を取っていること。 停止は、ABORT以外で行っていること。 ・データベースがオープンされていない。 ・全てのREDOログが適用済み(アーカイブに出力されていること) ・リストア後に、すぐにオープンできる。 ※NOARCHIVELOGモード時 非一貫性バックアップ 停止しない状態で、システム負荷の低い状態の時に一部のデータファイル、制御ファイルのバックアップを行う。 ※ARCHIVELOGモード時 バックアップタイプ ※EnterpriseManagerのRMAN利用(マウント/オープン時のみ) バックアップ対象 ①データファイル ②制御ファイル ③spfile ④アーカイブREDOログ バックアップセット ひとつのバックアップファイルに複数のバックアップ対象ファイルを含めたもの。 リストア時には、抽出が必要。 空きブロックは含めない。 増分も可能。 0、1があり 0:ベースとなるバックアップ(次回以降増分となりうる) 1:前回からの増分バックアップ イメージコピー 制御ファイル、データファイル、REDOログをコピーして作成したもの。 対象ファイルは、完全一致のため 抽出は必要ない。(そのまま) テープ装置へは行えない。 全体と増分バックアップ(RMAN) 増分バックアップはデータファイルをバックアップするときのみ レベル0:増分バックアップの基礎となり、全てのデータブロックを含む レベル1:前回(0から)変更されたブロック ■アーカイブログモード変更 ①停止 salplus / as sysdba shutdown ②mountモードで起動 startup open ③ログ出力先を設定 pfileの場合: log_archive_dest=/opt/oracle/admin/log spfileの場合: alter system set log_archive_dest_1= location=/opt/oracle/admin/log scope=both; alter system set log_archive_dest_2= location=/opt/oracle/admin/log scope=both; ④アーカイブログモード変更 sqlplus / as sysdba アーカイブログモード alter database archivelog; Noアーカイブログモード alter database noarchivelog; ⑤openモードで起動 alter database open; ■制御ファイルのバックアップ(作成スクリプトを作成) alter database backup controlfile to trace; ※USER_DUMP_DESTにスクリプトが作成される。 →スクリプトからのリカバリ ①nomountモードで起動 ②@crt_cnt.sql ③openモードで起動 ■フラッシュバック領域の管理 RMANでバックアップする場合、デフォルトの格納先はフラッシュバックリカバリ領域 利用目的 ・アーカイブREDOログ保存 ・バックアップファイルの保存 ・フラッシュバックログの保存 初期化パラメータ(フラッシュバックリカバリ領域) DB_RECOVERY_DUMP_DEST : フラッシュバックリカバリの領域の場所 DB_RECOVERY_FILE_SIZE :フラッシュバックリカバリ領域のサイズ サイズは、DBCAで作成した場合2Gとなっているので、小さすぎるため調整が必要 →アーカイブREDOログ、データファイル、フラッシュバックログの2倍程度を目安にする
https://w.atwiki.jp/oraclesoa/pages/6.html
Oracle Enterprise Service Bus Tips Oracle ESBでのSOAP Headerの設定方法
https://w.atwiki.jp/oraclesoa/pages/7.html
Oracle Web Services Manager
https://w.atwiki.jp/oraclesoa/pages/8.html
Oracle BAM
https://w.atwiki.jp/monkocho_0514/pages/18.html
マルチテナント ・CDBレベルで管理されるリソース(全DBで共有) ルートコンテナ(CDB$ROOT) ・SYSTEM表領域 ・SYSAUX表領域 ・UNDO表領域 ・REDOログファイル ・制御ファイル シードPDB(PDB$SEED) ・SYSTEM表領域 ・SYSAUX表領域 CDBレベルで管理される操作 PDBで実行可能な操作 マルチテナントアーキテクチャの利点 ・CDBの作成方法の特徴 SQLでCDBを作成する場合 1. enable_pluggable_database パラメータをTRUEに設定したインスタンスを起動 2. ENABLE PLUGGABLE DATABASE句を指定したCREATE DATABASE文を実行 $ cat initcdb3.ora db_create_file_dest= /u01/app/oracle/oradata db_name=cdb3 enable_pluggable_database=true $ export ORACLE_SID=cdb3 $ sqlplus / as sysdba SQL STARTUP MOUNT SQL CREATE DATABASE cdb3 ENABLE PLUGGABLE DATABASE 2 SEED SYSTEM DATAFILES SIZE 150M 3 SYSAUX DATAFILES SIZE 100M; SQL ( catalog.sqlなど実行) ・シードPDBのファイル配置を制御する要素 マルチテナント環境のデータディクショナリビュー CON_ID列(コンテナ番号)にはどんなものがあるか シードPDBのみ表領域を追加する方法 PDBを作成する方法 シードPDBからPDBを作成するとどうなるか 既存PDBをクローニングする場合の注意点 非CDBからPDBの作成はどのように行われるか 接続(プラグ)の条件 PDBの切断(UNPLUG)の注意点 PDBの削除(DROP)の注意点 CDBとPDBへの接続の特徴 PDBにサービスを追加するには PDB名を変更するには PDBの起動、停止方法 PDBの起動の特徴 PDBの自動起動の方法 PDBの停止の特徴 マルチテナントの初期化パラメータ変更はどこに保存されるか PDBでSCOPE=PFILEでパラメータを変更した場合の反映のされ方 PDBに接続してUNDO表領域を作成するとどうなるか マルチテナントの表領域とデータファイルの特徴 マルチテナントのデフォルト表領域、デフォルト永続表領域の特徴 マルチテナントの一時表領域、デフォルト一時表領域の特徴 マルチテナントの表領域のサイズ制限の方法 マルチテナントの共通ユーザ(C##xxx)の特徴 マルチテナントのローカルユーザの特徴 マルチテナントのCONTAINER=ALL句の特徴 マルチテナントのローカル権限と共通権限の特徴 ALTER SESSION SET CONTAINERによるコンテナ切替えの特徴は何か マルチテナントのOracleメタデータの特徴 CDBのバックアップ PDBのバックアップ マルチテナントの表領域のバックアップ マルチテナントのNOARCHIVELOGモード時のバックアップの注意点 マルチテナントのユーザー管理のバックアップ マルチテナントのインスタンス障害はどのレベルに影響するか マルチテナントの一時表領域のリカバリ方法 ルートコンテナのリカバリ方法 PDBの表領域のリカバリ方法 CDBレベルのDBPITR PDBレベルのPDBPITR マルチテナントの表領域レベルのTSPITR CDBのフラッシュバックデータベースはどのように実行されるか フラッシュバックアップ前にデータファイルの移動がある場合はどうなるか
https://w.atwiki.jp/wiki7_az/pages/8.html
rman でバックアップを取る dbca で rmanリポジトリ(データベース)を作成する。グローバル・データベース名 rmanrep SID rmanrep パスワード oracle キャラクタセット Unicode(AL32UTF8) 各国語キャラクタセット UTF8 oranavi で自動起動設定を ON にする。 rman ユーザを作成する。 $ export ORACLE_SID=rmanrep $ sqlplus "/ as sysdba" create user rman identified by rman quota unlimited on users; grant connect, resource, recovery_catalog_owner to rman; $ rman catalog rman/rman create catalog; connect target sys/oracle@orcl register database; backup database; rman tips Miracle Linux V4.0 で rman を使用できない $ which rman /usr/bin/X11/rman ← Oracle の rman とは別のプログラムを呼び出している。 アーカイブログ手動削除後に再同期するには crosscheck copy; delete expired copy; delete obsolete; リカバリ・カタログを更新する resync catalog; rman リポジトリの設定を確認する $ export ORACLE_SID=rmanrep rman connect target sys/manager@orcl.db01.oracle.co.jp connect catalog rman/rman@rmanrep show all RMAN 20003 エラーが発生する場合 reset database; DBA SQL DDL取得 set pagesize 0 SELECT DBMS_METADATA.GET_DDL( TABLE , USER_TABLES.TABLE_NAME), DBMS_METADATA.GET_DEPENDENT_DDL( INDEX , USER_TABLES.TABLE_NAME) FROM USER_TABLES; 表ロック調査 COL USERNAME FOR A8 COL OBJECT_NAME FOR A8 COL LMODE FOR 9999 COL PROGRAM FOR A8 COL CTIME FOR 9999 SELECT S.USERNAME, S.SID, S.SERIAL#, O.OBJECT_NAME, LMODE, V.CTIME, S.PROGRAM FROM DBA_OBJECTS O, V$LOCKED_OBJECT L, V$SESSION S, V$LOCK V WHERE O.OBJECT_ID = L.OBJECT_ID AND L.SESSION_ID = S.SID AND L.SESSION_ID = V.SID AND V.TYPE = TM ORDER BY CTIME DESC; 行ロック調査 SELECT S.USERNAME, S.SID, S.SERIAL#, O.OBJECT_NAME, LMODE, V.CTIME, S.PROGRAM FROM DBA_OBJECTS O, V$LOCKED_OBJECT L, V$SESSION S, V$LOCK V WHERE O.OBJECT_ID = L.OBJECT_ID AND L.SESSION_ID = S.SID AND L.SESSION_ID = V.SID AND V.TYPE = TX ORDER BY CTIME DESC; SQL調査 SELECT A.SQL_TEXT, A.ADDRESS FROM V$SQLAREA A, V$SESSION B WHERE A.ADDRESS = B.SQL_ADDRESS AND B.SID = ANY(SELECT SID FROM V$LOCK WHERE TYPE IN ( TX , TM )); 統計情報収集(スキーマ単位) BEGIN DBMS_STATS.GATHER_SCHEMA_STATS ( ownname = スキーマ名 , options = GATHER AUTO ); END; / 統計情報収集(テーブル単位) BEGIN DBMS_STATS.GATHER_TABLE_STATS( OWNNAME = スキーマ名 ,TABNAME = テーブル名 ); END; / 統計情報収集日付の確認 SELECT TABLE_NAME NAME, LAST_ANALYZED FROM USER_TABLES ORDER BY TABLE_NAME; 統計情報の内容確認 SELECT TABLE_NAME, NUM_ROWS, AVG_ROW_LEN, BLOCKS FROM USER_TABLES ORDER BY TABLE_NAME; セッションを強制終了する SELECT SID|| , ||SERIAL#|| , ||STATUS|| , ||USERNAME FROM V$SESSION WHERE USERNAME = C_LIVE ; SID|| , ||SERIAL#|| , ||STATUS|| , ||USERNAME --------------------------------------------- 199,7860,INACTIVE,C_LIVE 213,6979,INACTIVE,C_LIVE ALTER SYSTEM KILL SESSION 199,7860 ALTER SYSTEM KILL SESSION 213,6979 DBID を確認する $ sqlplus "/ as sysdba" select dbid from v$database; select username, default_tablespace from dba_users; select FILE_NAME, TABLESPACE_NAME from dba_data_files; http //www.dbforums.com/archive/index.php/t-1066637.html select dbms_metadata.get_ddl( TRIGGER , name , owner ) from dual; ユーザ作成 $ sqlplus /nolog connect / as sysdba create user scott profile default identified by tiger default tablespace user01 temporary tablespace temp account unlock; grant resource, connect to amashin; quit; UNDO保存を保証する。 select tablespace_name, retention from dba_tablespaces; alter tablespace UNDOTBS1 retention guarantee; データファイルの自動拡張を有効化する。 select file_name, tablespace_name from dba_data_files; select autoextensible, tablespace_name from dba_data_files; alter database datafile /opt/app/oracle/oradata/orcl/undotbs01.dbf autoextend on; ユーザのアカウントロックを解除する。 -- ロック解除 alter user SCOTT account unlock; -- パスワード変更 $ sqlplus scott/tiger SCN からタイムスタンプを求める。 select current_scn scn, scn_to_timestamp(current_scn) timestamp from v$database; タイムスタンプから SCN を求める。 select timestamp_to_scn(systimestamp) scn, systimestamp timestamp from dual; SQL*Plus CSV書き出し set linesize 1000 set pagesize 0 set trimspool on spool user_data.txt select " ||id|| "," ||name|| " from users; シノニム PUBLICシノニムを作成する $ sqlplus "/ as sysdba" CREATE PUBLIC SYNONYM emp FOR scott.emp; シノニムを削除する drop public synonym samplelink; データベースリンク データベースリンクの定義を確認する $ export ORACLE_SID=orcl $ sqlplus "/ as sysdba" select owner,db_link,username,host,created from dba_db_links; データベースリンクを作成する $ export ORACLE_SID=orcl $ sqlplus "/ as sysdba" create public database link samplelink connect to scott identified by tiger using orcl.db01.oracle.co.jp ; データベースリンクを使用する $ export ORACLE_SID=orcl $ sqlplus scott/tiger select * from emp@samplelink データベースリンクを削除する drop public database link samplelink; スタンドバイ・データベースを rman でバックアップすると、ORA-19573 エラーが発生する 症状 ORA-19573 cannot obtain sub-shared enqueue for datafile 6 原因 RMAN in version 9.2.0.1 のバグです。(bug 2688591 (TAR 2708247.999)) 処置方法 SQL shutdown immediate; SQL startup nomount; SQL alter database mount standby database; SQL alter database recover managed standby database disconnect from session; 参考情報 http //www.trivadis.ch/Images/standbybackup_en_tcm17-7294.pdf If you create a new tablespace on the primary database, perform a logfile switch and want to back up this tablespace on the standby database,RMAN in version 9.2.0.1 aborts with an error RMAN backup tablespace test; ORA-19573 cannot obtain sub-shared enqueue for datafile 6 This behavior has now been accepted as bug 2688591 (TAR 2708247.999). But there is a workaround stopping and starting the standby database, after which the backup works correctly. export/import 全データベースモードでエクスポートする $ export ORACLE_SID=orcl $ exp system/パスワード file=fulldump.dmp log=fulldump.log full=y ユーザーモードでエクスポートする $ export ORACLE_SID=orcl $ exp scott/tiger file=scott.dmp owner=scott ユーザーモードでインポートする $ imp scott/tiger file=sccot.dmp fromuser=sccot touser=sccot destroy=y ignore=y ORA-19809 リカバリ・ファイルの制限を超えています pfile の db_recovery_file_dest_size を増やす。 $ export ORACLE_SID=devel $ sqlplus "/ as sysdba" SQL create pfile= $ORACLE_BASE/admin/$ORACLE_SID/pfile/init$ORACLE_SID.ora from spfile; SQL exit $ vi $ORACLE_BASE/admin/$ORACLE_SID/pfile/init$ORACLE_SID.ora 編集した pfile から spfile を作成する。 $ cd $ORACLE_BASE/admin/$ORACLE_SID/pfile $ mv init$ORACLE_SID.ora init$ORACLE_SID.ora.org $ sqlplus "/ as sysdba" SQL create spfile from pfile= $ORACLE_BASE/admin/$ORACLE_SID/pfile/init$ORACLE_SID.ora ; SQL startup 参考 14 ORA-19400~ORA-24276 SQL*Loader コマンド $ export ORACLE_SID=orcl $ sqlldr userid=user01/******** control=testtbl.ctl data=testtbl.dat シーケンスを使用する(参考URL) LOAD DATA CHARACTERSET JA16SJIS INTO TABLE T_COMPANY_RAW FIELDS TERMINATED BY , trailing nullcols (ID "SEQ_COMPANY_RAW_ID.NEXTVAL", CORP_TYPE, NAME, ・ ・ FUTURE) 改行があるデータの流し込み load data CHARACTERSET JA16SJIS append continueif last != " into table test_table fields terminated by , enclosed by " ( ID, NAME, VALUE, TESTDATE DATE "YYYYMMDD") 日付データの流し込み load data CHARACTERSET JA16SJIS append into table t_answers fields terminated by , trailing nullcols ( id, campaign_id, user_id, registered "to_date( registered, YYYY/MM/DD HH24 MI SS )" ) 「データ・ファイルのフィールドが最大長を超えています。」 load data CHARACTERSET JA16SJIS append into table t_encourage fields terminated by , ( ID, CAT2_ID, MAILBODY char(4000)) Oracle 10g R10.2.0.1 インストール (MiracleLinuxV3.0) memoRPM を更新してから Oracle をインストールする DHCP を使用している場合、一時的にTCP/IPの設定で固定IPアドレスを割り当ててから、Oracle をインストールする ダウンロードOracle 10g R10.2.0.1 をダウンロードする rootユーザでログインする ランレベルを 5 に変更する # init 5 oranavi を起動する # oranavi Oracle DBMS のインストール全てデフォルト設定でインストール Oracle 9i R9.2.0.4.0 インストール後に必要な作業 Run the following commands and scripts in order from $ORACLE_HOME in migrate mode on all updated databases. If you are using the OLAP option, then ensure the database listener is up. $ sqlplus "/ as sysdba" startup migrate spool patch.log @?/rdbms/admin/catpatch.sql shutdon immediate startup This step is optional, and will recompile all invalid PL/SQL packages now instead of when the packages are accessed the first time. The utlrcmp.sql script can be used to parallelize this in multiprocessor machines. @?/rdbms/admin/utlrp.sql Enter the following commands if using Oracle OLAP option alter user olapsys identified by password account unlock; connect olapsys/password @?/cwmlite/admin/postamd.sql ORA-06512 → 参考URL 現象 ORA-00604 error occurred at recursive SQL level 1 ORA-06521 PL/SQL Error mapping function ORA-06512 at "SYS.OLAPIHISTORYRETENTION", line 1 ORA-06512 at line 6 原因 BUG 3386542 処置 (metalink Note 266728.1) Disable OLAPISTARTUPTRIGGER and OLAPISHUTDOWNTRIGGER to avoid error from being generated. ALTER TRIGGER OLAPISTARTUPTRIGGER DISABLE; ALTER TRIGGER OLAPISHUTDOWNTRIGGER DISABLE; rmanでデータベースを複製する 前提条件Miracle Linux V3.0 Oracle 10g Standard Edition ターゲット・データベースへ接続できるようにする $ vi /opt/app/oracle/product/10.1.0/db_1/network/admin/tnsnames.ora ACCOUNT1.DB01.ORACLE.CO.JP = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.101)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = account1.db01.oracle.co.jp) (SERVER = DEDICATED) ) ) ACCOUNT1.RESEARCH01.ORACLE.CO.JP = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.102)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = account1.oracle.co.jp) (SERVER = DEDICATED) ) ) $ vi /opt/app/oracle/product/10.1.0/db_1/network/admin/listener.ora (SID_DESC = (GLOBAL_DBNAME = account1.db01.oracle.co.jp) (ORACLE_HOME = /opt/app/oracle/product/10.1.0/db_1) (SID_NAME = account1) ) $ sqlplus scott/tiger@account1.db02.oracle.co.jp ターゲット・データベースのバックアップ (複製側) # su - oracle $ mkdir -p /opt/app/oracle/oradata/account1/backups ← ターゲットデータベース側・複製側の両方で作成する $ export ORACLE_SID=orcl $ sqlplus /nolog conn / as sysdba create user rman identified by rman temporary tablespace temp default tablespace users quota unlimited on users; grant recovery_catalog_owner, connect, resource to rman; $ rman catalog rman/rman@orcl connect target sys/manager@account1.db01.oracle.co.jp; create catalog; register database; configure retention policy to redundancy = 1; configure controlfile autobackup on; configure controlfile autobackup format for device type disk to /opt/app/oracle/oradata/account1/backups/%F ; backup database format /opt/app/oracle/oradata/account1/backups/full_%d_%T_s%s_p%p ; backup archivelog all delete all input format /opt/app/oracle/oradata/account1/backups/arc_%d_%T_s%s_p%p ; 補助データベースを作成する $ orapwd file=/opt/app/oracle/product/10.1.0/db_1/dbs/orapwaccount1 password=manager entries=30 force=y alter system set remote_login_passwordfile= EXCLUSIVE scope=spfile; shutdown immediate startup force nomount show parameters remote_login_passwordfile; $ cd /opt/app/oracle/admin/account1/ $ mkdir pfile bdump cdump create udump $ cd /opt/app/oracle/admin/account1/pfile $ vi initaccount1.ora DB_NAME=account1 CONTROL_FILES=(/opt/app/oracle/oradata/account1/control01.ctl, /opt/app/oracle/oradata/account1/control02.ctl, /opt/app/oracle/oradata/account1/control03.ctl) $ export ORACLE_SID=account1 $ sqlplus "/ as sysdba" create spfile from pfile= /opt/app/oracle/admin/account1/pfile/initaccount1.ora ; startup force nomount $ lsnrctl start $ rman target sys/manager@account1.db01.oracle.co.jp auxiliary sys/manager@account1.db02.oracle.co.jp duplicate target database to account1 nofilenamecheck; duplicate target database for standby nofilenamecheck; フラッシュバックドロップ ごみ箱の中を見る。 SELECT original_name, type, ts_name, droptime, dropscn, object_name FROM user_recyclebin; テーブルをリストアする。 flashback table test to before drop; インデックスをリストアするテーブルをリストアすると、インデックスや制約も復活するが、名前はごみ箱の中の時のままなので、手動でリネームする。 select index_name from user_indexes where table_name = TEST ; alter index "BIN$ExUXY+Nfh9zgQAB/AQAI6g==$0" rename to PK_TEST; ごみ箱を空にする。 purge dba_recyclebin; purge user_recyclebin; purge tablespace user01 user test; purge table test; purge index pk_test; ごみ箱を介さずに削除する。 drop table test purge; drop user scott cascade; drop tablespace user01 including contents; フラッシュバックデータベースを有効にする DB_RECOVERY_FILE_DEST、DB_RECOVERY_FILE_DEST_SIZE が設定されているか確認する。 select name,value from v$parameter where name like db_recovery_file_dest% ; 設定されていなければ、設定する。 alter system set db_recovery_file_dest= /opt/app/oracle/flash_recovery_area scope =both; alter system set db_recovery_file_dest_size = 2147483648 scope = both; アーカイブログモードにする。 shutdown immediate startup mount alter database archivelog; alter database open; archive log list; フラッシュバックログの保存期間を確認する。 select name, value from v$parameter where name = db_flashback_retention_target ; フラッシュバックデータベース機能を有効化する。 shutdown immediate startup mount alter database flashback on; alter database open select log_mode, flashback_on from v$database; どの時点までフラッシュバックできるか確認する。 select flashback_size/1024/1024 "SIZE(M)", estimated_flashback_size/1024/1024 "EST_SIZE(M)", oldest_flashback_scn, to_char(oldest_flashback_time, YYYY-MM-DD HH24 MI SS ) from v$flashback_database_log; フラッシュバックデータの書き込みサイズを確認する。 select to_char(begin_time, HH24 ) hour, flashback_data/1024 "FLASHBACK_DATA(K)", redo_data/1024 "REDO_DATA(K)" from v$flashback_database_stat; フラッシュバックデータベースを実行する SQL shutdwon immediate SQL startup mount SQL flashback database to scn 608964; SQL flashback database to time "to_timestamp( 06-05-06 22 41 00.059098 )"; RMAN flashback database to scn 608964; RMAN flashback database to time "to_timestamp( 06-05-06 22 41 00.059098 )"; RMAN flashback database to sequence 1 thread 1; データベースをオープンする。 shutdown immediate startup mount alter databse open read only; -- 読み取り専用でオープンする場合 alter database open resetlogs; -- 読み書き可能でオープンする場合 フラッシュバックログから表領域を除外する alter tablespace example flashback off; select name, flashback_on from v$tablespace; ブロック破損 ブロック破損の診断 $ dbv file=/opt/app/oracle/oradata/orcl/system01.dbf SQL analyze table test validate structure cascade; SQL analyze index pk_test validate structure; rman で物理破損ブロックを検出する。 RMAN backup validate datafile 1; SQL select * from v$database_block_corruption; rman で論理破損ブロックを検出する。 RMAN backup check logical datafile 1; rman で物理破損チェックを行わずにバックアップを行う。 RMAN backup nochecksum datafile 1; 破損ブロックを含んだままバックアップをとる。 RMAN run { set maxcorrupt for datafile /opt/app/oracle/oradata/orcl/system01.dbf to 2; backup datafile /opt/app/oracle/oradata/orcl/system01.dbf ; } rman によるブロックメディアリカバリ RMAN blockrecover datafile 1 block 1; RMAN blockrecover corruption list; 簡単なジョブの作成 ジョブを作成する $ export ORACLE_SID=rmanrep $ sqlplus "/ as sysdba" BEGIN DBMS_SCHEDULER.CREATE_JOB ( job_name = SYS.BACKUP , job_type = EXECUTABLE , job_action = /home/oracle/devel/shell/backup.sh , start_date = SYSTIMESTAMP, repeat_interval = FREQ=DAILY;BYHOUR=5;BYMINUTE=0 , enabled = TRUE, auto_drop = FALSE, comments = ORCLデータベースのバックアップ ); END; / ジョブを削除する BEGIN DBMS_SCHEDULER.DROP_JOB(job_name = sys.backup ); END; / プログラムとスケジュールを使用したジョブの作成 SCOTTユーザに CREATE JOB 権限を与える $ export ORACLE_SID=orcl $ sqlplus "/ as sysdba" GRANT CREATE JOB TO SCOTT; CONNECT SCOTT/TIGER; ストアドプロシージャの作成 CREATE OR REPLACE PROCEDURE test_del( p_id test.id%TYPE) AS BEGIN DELETE FROM test WHERE ID = p_id; END test_del; / プログラムの作成 BEGIN -- プログラムの作成 DBMS_SCHEDULER.CREATE_PROGRAM( program_name = SCOTT.TEST_PROGRAM , program_type = STORED_PROCEDURE , program_action = SCOTT.TEST_DEL , number_of_arguments = 1, enabled = FALSE, comments = TEST表のDELETE ); -- プログラム引数の定義 DBMS_SCHEDULER.DEFINE_PROGRAM_ARGUMENT( program_name = SCOTT.TEST_PROGRAM , argument_name = P_ID , argument_position = 1, argument_type = NUMBER ); -- プログラムの有効化 DBMS_SCHEDULER.ENABLE( SCOTT.TEST_PROGRAM ); END; / スケジュールの作成 BEGIN DBMS_SCHEDULER.CREATE_SCHEDULE( schedule_name = SCOTT.MONTHLY_SCHEDULE , start_date = SYSTIMESTAMP, repeat_interval = FREQ=MONTHLY;BYMONTHDAY=15 , comments = 毎月15日実行 ); END; / プログラムとスケジュールを利用したジョブの作成 BEGIN DBMS_SCHEDULER.CREATE_JOB( job_name = SCOTT.TEST_JOB , program_name = SCOTT.TEST_PROGRAM , schedule_name = SCOTT.MONTHLY_SCHEDULE , enabled = FALSE, auto_drop = FALSE, comments = TEST表のDELETE ); DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE( job_name = SCOTT.TEST_JOB , argument_name = P_ID , argument_value = 10 ); DBMS_SCHEDULER.ENABLE( SCOTT.TEST_JOB ); END; / PL/SQL PL/SQL実行後、エラーを表示する。 SHOW ERROR DBMS_OUTPUT.PUT_LINE などでの画面出力を有効にする。 SET SERVEROUTPUT ON
https://w.atwiki.jp/akubi/
本運用(?) 現在、本運用(?)ページとなっています 管理人Akubiの参加bandに関する告知ページのはずです 現在、oracleではDrumsの方を大募集中です 興味をもたれた方は是非ご連絡を! このサイトへのご意見、ツッコミ等は 下記のメールへお願いします oracle-wiki●mail.goo.ne.jp (スパム対策の為●を@に置き換えて送信ください) news 2005/12/27 サイト製作開始 コンテンツ イベント情報 Blog BBS all -
https://w.atwiki.jp/adsl243/pages/20.html
Enterprise Managerの使用ポート番号の確認 emctl status dbconsole 又は $ORACLE_HOME/hostname_SID/sysman/config/emd.properties のREPOSITORY_URLの項目から確認出来ます。 Enterprise Managerの使用ポート番号の変更 emca -reconfig ports -DBCONTROL_HTTP_PORT ポート番号 iSQL*Plus関連 サービスの開始 isqlplusctl start サービスの停止 isqlplusctl stop 接続先の変更(ポート番号orホスト名) ①と②のファイルを編集します。 ①vi $ORACLE_HOME¥hostname_SID¥sysman¥config¥emoms.properties 下記二点を編集 oracle.sysman.db.isqlplusUrl=http¥ //host.domain¥ 5560/isqlplus/dynamic oracle.sysman.db.isqlplusWebDBAUrl=http¥ //host.domain¥ 5560/isqlplus/dynamic ②vi $ORACLE_HOME¥oc4j¥j2ee¥isqlplus¥config¥http-web-site.xml web-site要素のport属性を変更 web-site port="5560" ...
https://w.atwiki.jp/drip122/pages/38.html
Bronze SQL基礎Ⅰ(1Z0-017J) SQL文とSQL*Plusコマンドの違い RENAMEはOracle独自コマンド RENAME object_name_from TO object_name_to; Oracle以外のDBではALTERを使う。 ALTER TABLE object_name_from RENAME TO object_name_to; 制約 check制約 create table testtb (col number constraint check_name check (col between 100 and 999)); forengn key制約 create table 社員 (部門番号 number constraint 社員_部門_FK references 部門(部門番号)); SQL文で使用可能な様々な関数 where句でグループ関数は利用不可。 group by, where, order byは同時に利用可。 group byとorder byを同時に利用する場合は、order by句にはgroup by句で指定した列を記述しなくてはならない。 group by句はselect句で指定した列をでなくてもOK。 select max(給与) from 社員 group by 社員名; ビューに対してもシノニム作成可能。 外部結合では、結合列にnullがあっても表示できる。 SELECT文の関数 select 社員名 where 職務 IN ( 営業 , 部長 ); count(distinct 部門番号) は構文的に正しい。 文字、日付のリテラルは単一引用符( )で囲む。 列に別名をつけるときは二重引用符(")で囲む。 等価または非等価結合による複数表からのデータの取り出し 等価結合で3つ以上の表も結合可能 DML文 insert, update, delete, merge, select 表からの行の削除 create tableは暗黙コミットされる。 deleteでも副問合せ可能 delete from 社員 where 給与 = (select max(給与) from 社員); 列を定義する際に利用できるデータ型 日時および期間型 TIMESTAMP INTERVAL YEAR[(y)] TO MONTH INTERVAL DAY[(d)] TO SECOND [(S)] Bronze SQL基礎Ⅰ(1Z0-017J) データベースのリストアおよびリカバリ データベースの未使用領域の再利用 データベース・オブジェクトの追加作成 データベース記憶領域構造の作成および管理 バックアップおよびリカバリ操作のためのデータベースの構造 表領域=セグメントを格納するフォルダみたいなもん セグメント=エクステントを複数まとめたもの エクステント=データブロックを複数まとめたもの パフォーマンス・アドバイザを利用したデータベース・パフォーマンス SQLアクセスアドバイザは、問い合わせ&DMLを検証 SQLチューニングアドバイザは、問い合わせを検証 フラッシュバック機能の使用 フラッシュバックで使用されるのはUNDO表領域 Enterprise Manager Database Controlへのアクセス Oracleインスタンスおよびデータベースのコンポーネントの理解 Oracleデータベースの管理に使用するツールの定義 SQL*Plusによるデータベースアクセス sqlplus /nolog これはインスタンスが停止した状態でも、sqlplusを使えるコマンド